//解决uni-app在界面刷新时丢失vuex状态的问题
export default function createPersistedState(options = {}) {
  const { key = 'vuex', storage = uni } = options

  return (store) => {
    // 初始化时从本地存储中获取保存的 Vuex 状态并替换当前状态
    const savedState = storage.getStorageSync(key)
    // console.log(`已将 ${key} 从本地存储中获取并替换当前状态,value=${savedState}`)
    if (savedState) {
      store.replaceState(JSON.parse(savedState))
    }
    // 监听 Vuex 的状态变化，并将新的状态保存到本地存储中
    store.subscribe((mutation, state) => {
      // console.log(`Vuex 状态发生变化，保存到本地存储中,key=${key},value=${JSON.stringify(state)}`)
      storage.setStorageSync(key, JSON.stringify(state))
    })
  }
}
